package array;

/**
 * 给定一个长度为n+1的数组，所有数组的值都在1-n的范围 不改变数组结构情况下，找出数组中重复元素
 *
 *
 * 利用hashmap和hashset来辅助也可以在不改变结构的情况下找出数组中重复的元素
 */
public class FindAnyRepeatElement {

  public void findRepeatElement(int array[]) {
    if (array == null || array.length <= 0) {
      System.out.println("数组为null或者数组的长度为0");
    }

    for (int i = 0; i < array.length; i++) {
      if (array[i] < 1 || array[i] > array.length - 1) {
        System.out.println("数组的值必须在1到" + (array.length - 1) + "的范围内");
      }
    }

    int[] copyArray = new int[array.length];
    for (int i = 0; i < array.length; i++) {
      int value = array[i];
      if (copyArray[value] == array[i]) {
        System.out.println(array[i] + "是重复的数字");
        break;
      } else {
        copyArray[value] = array[i];
      }
    }

  }


  public static void main(String args[]) {
    FindAnyRepeatElement FindAnyRepeatElement = new FindAnyRepeatElement();
    FindAnyRepeatElement.findRepeatElement(new int[]{2, 3, 5, 4, 3, 2, 6, 7});
  }
}
